// 无头单向非循环链表

#define _CRT_SECURE_NO_WARNINGS 1
#include "SList.h"

void TestSList1()
{
	SLTNode* pHead = NULL;
	SListPushBack(&pHead, 1);// 尾插
	SListPushBack(&pHead, 2);
	SListPushBack(&pHead, 3);
	SListPushBack(&pHead, 4);
	SListPushFront(&pHead, 0);// 头插
	SListPrint(pHead);// 打印

	SListPophBack(&pHead);// 尾删
	SListPophBack(&pHead);
	SListPophBack(&pHead);
	SListPophBack(&pHead);
	SListPophBack(&pHead);
	SListPrint(pHead);// 打印
}

void TestSList2()
{
	SLTNode* pHead = NULL;
	SListPushBack(&pHead, 1);// 尾插
	SListPushBack(&pHead, 2);
	SListPushBack(&pHead, 3);
	SListPushBack(&pHead, 4);
	SListPushFront(&pHead, 0);// 头插
	SListPrint(pHead);// 打印

	SListPopFront(&pHead);// 头删
	SListPopFront(&pHead);
	SListPopFront(&pHead);
	SListPopFront(&pHead);
	SListPopFront(&pHead);
	SListPrint(pHead);// 打印
}


void TestSList3()
{
	SLTNode* pHead = NULL;
	SListPushBack(&pHead, 1);// 尾插
	SListPushBack(&pHead, 2);
	SListPushBack(&pHead, 3);
	SListPushBack(&pHead, 4);
	SListPrint(pHead);// 打印

	// 在链表中元素‘3’的前面插入元素‘30’
	SLTNode* pos = SListFind(pHead, 3);
	if (pos)
	{
		SListInsert(&pHead, pos, 30);
	}
	SListPrint(pHead);// 打印
}

void TestSList4()
{
	SLTNode* pHead = NULL;
	SListPushBack(&pHead, 1);// 尾插
	SListPushBack(&pHead, 2);
	SListPushBack(&pHead, 3);
	SListPushBack(&pHead, 4);
	SListPrint(pHead);// 打印

	SLTNode* pos = SListFind(pHead, 3);
	if (pos)
	{
		SListErase(&pHead, pos);
	}
	SListPrint(pHead);
}

int main()
{
	printf("Test1:\n");
	TestSList1();
	printf("\n");

	printf("Test2:\n");
	TestSList2();
	printf("\n");

	printf("Test3:\n");
	TestSList3();
	printf("\n");

	printf("Test4:\n");
	TestSList4();
	printf("\n");

	return 0;
}